﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

/*编写一个订单管理的控制台程序，实现添加订单、删除订单、修改订单、查询订单
 （按照订单号、商品名称、客户、订单金额等进行查询）功能。
提示：主要的类有Order（订单）、OrderDetails（订单明细），OrderService（订单服务），
订单数据可以保存在OrderService中一个List中。在Program里面可以调用OrderService的方法完成各种订单操作。
要求：
（1）使用LINQ实现各种查询功能，查询结果按照订单总金额排序返回。
（2）在订单删除、修改失败时，能够产生异常并显示给客户错误信息。
（3）作业的订单和订单明细类需要重写Equals方法，确保添加的订单不重复，每个订单的订单明细不重复。
（4）订单、订单明细、客户、货物等类添加ToString方法，用来显示订单信息。
（5）OrderService提供排序方法对保存的订单进行排序。默认按照订单号排序，
也可以使用Lambda表达式进行自定义排序
*/

namespace OrdersManage
{
    internal class Program
    {
        static void Main(string[] args)
        {
            List<OrderDetails> ods = new List<OrderDetails>();
            OrderDetails od1 = new OrderDetails("aa",2,5.0);
            OrderDetails od2 = new OrderDetails("bb",3, 2.5);
            OrderDetails od3 = new OrderDetails("cc",6, 4.0);
            OrderDetails od4 = new OrderDetails("dd",1, 12.0);
            OrderDetails od5 = new OrderDetails("ee",10, 9.5);
            ods.Add(od1); ods.Add(od2); ods.Add(od3); ods.Add(od4); ods.Add(od5);
            Order order1 = new Order(001,"熊大","2023/03/20",ods);
            Order order2 = new Order();
            order2.OdNum = 002;
            order2.Client = "熊二";
            order2.date = "2023/03/23";
            order2.addDetail(od1);
            order2.addDetail(od3);
            order2.addDetail(od5);
            List<Order> orders = new List<Order>();
            orders.Add(order1);
            orders.Add(order2);
            OrderService os = new OrderService();
            os.orders = orders;
            Console.WriteLine(os.SearchOrder("熊二")); 
            Order order3 = new Order();
            order3.OdNum = 001;
            os.addOrder(order3);
            os.showOrders();
            Order order4 = new Order();
            order4.OdNum = 003;
            os.addOrder(order4);
            os.showOrders();
            Console.ReadLine();






        }
    }
}
